
package com.jf.cloud.auth.mapper;

import com.jf.cloud.auth.model.AuthSocial;
import org.apache.ibatis.annotations.Param;

/**
 * 用户社交登陆信息
 *
 * @author zz
 * @date 2021-01-06 10:26:53
 */
public interface AuthSocialMapper {

    /**
     * 保存用户社交登陆信息
     *
     * @param authSocial 用户社交登陆信息
     */
    void save(@Param("authSocial") AuthSocial authSocial);

    /**
     * 更新用户社交登陆信息
     *
     * @param authSocial 用户社交登陆信息
     */
    void update(@Param("authSocial") AuthSocial authSocial);

    /**
     * 根据用户社交登陆信息id删除用户社交登陆信息
     *
     * @param id
     */
    void deleteById(@Param("id") Long id);

    /**
     * 根据社交账号userId和类型获取用户社交账号信息
     *
     * @param bizUserId  第三方系统userId
     * @param socialType 第三方系统类型
     * @return 用户社交账号信息
     */
    AuthSocial getByBizUserIdAndType(@Param("bizUserId") String bizUserId, @Param("socialType") Integer socialType);
    /**
     * 根据社交账号userId和类型获取用户社交账号信息
     *
     * @param phone  第手机号
     * @return 用户社交账号信息
     */
    AuthSocial getBizUserIdByPhone(@Param("phone") String phone);

    /**
     * 根据社交账号userId和类型获取用户社交账号信息
     *
     * @param userId  第手机号
     * @return 用户社交账号信息
     */
    AuthSocial getUserInfoByUserId(@Param("userId") Long userId);
    /**
     * 获取根据尝试社交登录时，保存的临时的uid获取社交
     *
     * @param tempUid tempUid
     * @return 用户社交账号信息
     */
    AuthSocial getByTempUid(@Param("tempUid") String tempUid);

    /**
     * 绑定社交账号，通过tempuid
     *
     * @param uid     uid
     * @param tempUid tempUid
     */
    void bindUidByTempUid(@Param("uid") Long uid, @Param("tempUid") String tempUid);

    /**
     * 获取在微信公众号/小程序 绑定的账号数量
     *
     * @param uid        uid
     * @param socialType 社交帐号类型
     * @return 绑定账号的数量
     */
    int countByUidAndSocialType(@Param("uid") Long uid, @Param("socialType") Integer socialType);


    /**
     * 解除用户绑定
     *
     * @param bizUserId  openid
     * @param socialType 社交账号类型
     */
    void unBindUser(@Param("bizUserId") String bizUserId, @Param("socialType") Integer socialType);

    /**
     * 解除用户绑定
     *
     * @param uid 用户id
     */
    void unBindUserByUid(@Param("uid") Long uid);
}
